#!/bin/bash
# LOGPROG ON3MOH - start script for Linux
HERE="$(cd "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")" && pwd)"
DATA="${XDG_DATA_HOME:-$HOME/.local/share}/LOGPROG ON3MOH"
mkdir -p "$DATA"
LOG="$DATA/start.log"

unset PYTHONHOME PYTHONPATH
export PYTHONNOUSERSITE=1
# Qt: use X11 (also via XWayland on Wayland desktops) - most reliable for Qt 5
if [ -z "$QT_QPA_PLATFORM" ] && [ -n "$DISPLAY" ]; then export QT_QPA_PLATFORM=xcb; fi
# Map window (QtWebEngine): the Chromium sandbox does not work on every distribution
export QTWEBENGINE_DISABLE_SANDBOX=1

"$HERE/runtime/bin/python3" "$HERE/app/start.py" "$@" 2> >(tee "$LOG" >&2)
rc=$?
if [ $rc -ne 0 ] && [ $rc -ne 130 ] && [ $rc -ne 143 ]; then   # not when stopped with Ctrl+C or at logout
    sleep 0.3
    msg="LOGPROG ON3MOH could not start (code $rc). Details: $LOG"
    if grep -q -i "could not connect to display" "$LOG" 2>/dev/null; then
        msg="LOGPROG ON3MOH needs a graphical desktop (no X11 display found). Details: $LOG"
    elif grep -q -i "platform plugin" "$LOG" 2>/dev/null; then
        msg="LOGPROG ON3MOH could not start: some X11 libraries are missing.

Debian / Ubuntu / Mint:
  sudo apt install libxcb-xinerama0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xkb1 libxkbcommon-x11-0 libxcb-shape0
Fedora:
  sudo dnf install xcb-util-wm xcb-util-image xcb-util-keysyms xcb-util-renderutil libxkbcommon-x11

Details: $LOG"
    fi
    echo "$msg" >&2
    if command -v zenity >/dev/null; then zenity --error --no-wrap --text="$msg" 2>/dev/null
    elif command -v kdialog >/dev/null; then kdialog --error "$msg" 2>/dev/null
    elif command -v xmessage >/dev/null; then xmessage "$msg" 2>/dev/null
    fi
fi
exit $rc
